package com.exercise.algorithm;

import com.exercise.algorithm.tree.BinaryTree;
import com.exercise.algorithm.tree.BinaryTreeNode;
import com.fun.frame.SourceCode;

public class A938 extends SourceCode {
    /*
    给定二叉搜索树的根结点 root，返回 L 和 R（含）之间的所有结点的值的和。

二叉搜索树保证具有唯一的值。

示例 1：

输入：root = [10,5,15,3,7,null,18], L = 7, R = 15
输出：32
示例 2：

输入：root = [10,5,15,3,7,13,18,1,null,6], L = 6, R = 10
输出：23

     */

    public int fun(BinaryTree tree, int l, int r) {
        return fun(tree.getRoot(), l, r);
    }

    public int fun(BinaryTreeNode node, int l, int r) {
        if (node == null) return 0;
        if (node.getData() > r) return fun(node.getLeft(), l, r);
        if (node.getData() < l) return fun(node.getRight(), l, r);
        return node.getData() + fun(node.getLeft(), l, r) + fun(node.getRight(), l, r);
    }


}
